<!DOCTYPE html>
<html lang="">
<head>
    <meta charset=utf-8" />
    <title>软件生存期模型的特点</title>
</head>
<body>
1、瀑布模型：是最早的软件开发模型之一，它将软件开发过程划分为若干顺序连接的阶段， 每个阶段的输出作为下一个阶段的输入。
        其特点是阶段间具有顺序性和依赖性，强调文档驱动和质量保证。
<br>
优点：强迫开发人员采用规范的方法； 严格规定每个阶段必须提交的文档； 每个阶段结束前对文档进行评审，尽早发现问题。
<br>
缺点：只能通过文档了解产品，需求不明确时难以适用；开发周期较长，灵活性较差。
<br>
2、螺旋模型：将开发过程分为四个类型：风险分析、制定计划、实施工程、客户评估。每次评估后确定是否进行螺旋线的下一个回路。
<br>
优点： 降低风险，适用于高风险、大型软件项目； 强调风险分析和质量保证。
<br>
缺点： 需要丰富的风险评估经验； 迭代次数过多会增加开发成本，延迟提交时间。
<br>
3、进化模型：在瀑布模型的基础上，一次性开发难以成功，因此，演化模型提倡进行“两次开发”，分别是试验开发和产品开发。
        每个开发阶段按照瀑布模型进行具体开发活动。 适用于需求不清、开发周期短的中小型系统。
<br>
优点： 明确用户需求、提高系统质量、降低开发风险。
<br>
缺点： 管理难度提高、开发结构化较差、可能抛弃文档驱动、可能导致产品结构化较差。
<br>
4、原型模型：原型方法指在获得基本需求后，快速分析，实现一个小型的软件系统原型，满足用户的基本要求。用户可以提出修改意见，校正需求。
        原型方法主要用于明确需求，但也可以用于软件开发的其他阶段。
<br>
5、增量模型：结合瀑布模型和演化模型的优点，在需求不清时，对最核心或最清晰的需求，利用瀑布模型实现。
        再对后续需求进行重复开发（可能按照需求的优先级逐个进行），从而逐步建成一个完整的软件系统。
<br>
优点： 保障核心功能实现、开发风险较低、保障最高优先级的功能的可靠实现、提高系统稳定性和可维护性。
<br>
缺点： 增量粒度难以合理选择、确定所有的需求服务较困难。
<br>
</body>
</html>